package com.qike.duola.service;

import com.qike.duola.domain.DuolaContractWithBLOBs;
import com.qike.duola.domain.DuolaProject;
import com.qike.duola.dto.*;
import com.qike.duola.vo.*;

import java.util.List;

/**
 * @Author: Eric.zhou
 * @Date: 2020/9/2 15:10
 */
public interface DuolaContractService {

    /**
     * 添加合同
     * @param contractAddDto
     */
    void contractAdd(ContractAddDto contractAddDto) throws Exception;

    /**
     *合同列表
     * @param contractListDto
     * @return
     */
    ContractListVo contractList(ContractListDto contractListDto);

    /**
     * 合同详情
     * @param id
     * @return
     */
    ContractInfoVo contractInfo(Integer id) throws Exception;

    /**
     * 转正
     * @param transFormalDto
     */
    void transFormal(TransFormalDto transFormalDto) throws Exception;

    /**
     * 添加补充协议
     * @param addSupplementaryAgreementDto
     */
    void addSupplementaryAgreement(AddSupplementaryAgreementDto addSupplementaryAgreementDto) throws Exception;

    /**
     * 查看补充协议
     * @param id
     * @return
     */
    SupplementaryAgreementInfoVo supplementaryAgreementInfo(Integer id) throws Exception;

    /**
     * 编辑合同
     * @param contractEditDto
     */
    void contractEdit(ContractEditDto contractEditDto) throws Exception;

    /**
     * 删除合同
     * @param contractDelDto
     */
    void contractDel(ContractDelDto contractDelDto) throws Exception;

    /**
     * 获取某个客户下所有已审批的合同下工程列表
     * @param uid
     * @return
     */
    List<DuolaProject> GetProjectListByUid(Integer uid);

    /**
     * 开始/停止供货
     * @param startOrStopDto
     */
    void startOrStop(StartOrStopDto startOrStopDto) throws Exception;

    /**
     * 根据合同id获取已绑定报价单的详细列表
     * @param id
     * @return
     */
    List<PayGoodsListByQuoteIdVo> getQuoteByContractId(Integer id) throws Exception;

    List<ContractList> integrationContractList(DuolaContractWithBLOBs duolaContractWithBLOB, List<ContractList> lists);

    /**
     * 编辑补充协议
     * @param editSupplementaryAgreementDto
     */
    void editSupplementaryAgreement(EditSupplementaryAgreementDto editSupplementaryAgreementDto) throws Exception;
}
